//#include <iostream>
//#include<vector>
//using namespace std;
//
//    // vector<vector<int>> vis;
//    int m, n;
//    void dfs(vector<vector<int>>& grid, vector<vector<int>>& vis, int i, int j, int& max)
//    {
//        if (grid[i][j] != 1)   return;
//        if (vis[i][j] == 1)   return;
//        vis[i][j] = 1;
//        max++;
//        
//        if (i - 1 >= 0)  dfs(grid, vis, i - 1, j, max);
//        if (i + 1 < vis.size())  dfs(grid, vis, i + 1, j, max);
//        if (j - 1 >= 0)  dfs(grid, vis, i, j - 1, max);
//        if (j + 1 < vis[0].size())  dfs(grid, vis, i, j + 1, max);
//
//    }
//
//    int main() {
//        vector<vector<int>> grid = { {1,1,1},{0,0,0},{1,0,1} };
//        m = grid.size(), n = grid[0].size();
//        vector<vector<int>> vis(m, vector<int>(n));
//        int max = 0;
//        int ret = 0;
//
//        for (int i = 0; i < m; i++)
//        {
//            for (int j = 0; j < n; j++)
//            {
//                if (grid[i][j] == 1 && vis[i][j] == 0)
//                {
//                    dfs(grid, vis, i, j, max);
//                    if (max > ret) ret = max;
//                    max = 0;
//                }
//            }
//        }
//        cout << ret;
//        return ret;
//    }
